/*****************************************************************************
*
*  PROJECT:		
*               
*  LICENSE:		
*
*  DEVELOPER:	
*
*****************************************************************************/

#ifndef EONMODEL_H
#define EONMODEL_H

#include <gl/glut.h>

#include "EonVector3.h"
#include "MD5Model.h"
#include "l3ds.h"

namespace Eon
{
	class Model
	{
		public:

			class modelMD5
			{
				public:

					//////////////////////////////////////////////////////////
					//					Constructor							//
					//////////////////////////////////////////////////////////

					modelMD5::modelMD5( void )			{ }
		
					//////////////////////////////////////////////////////////
					//					Deconstructor						//
					//////////////////////////////////////////////////////////

					modelMD5::~modelMD5( void )			{ }

					//////////////////////////////////////////////////////////
					//					Class Methods						//
					//////////////////////////////////////////////////////////

					void init						( Eon::Vector3 modelPosition, Eon::Vector3 modelRotation, GLfloat modelScale, const char* modelFileName );
					void moveModel					( GLfloat modelXPosition, GLfloat modelYPosition, GLfloat modelZPosition );
					void moveModel					( Eon::Vector3 modelPosition );
					void rotateModel				( GLfloat modelXRotation, GLfloat modelYRotation, GLfloat modelZRotation );
					void rotateModel				( Eon::Vector3 modelRotation );
					void renderModel				( void );
					Eon::Vector3 getPosition		( void );
					Eon::Vector3 getRotation		( void );
					GLfloat getScale				( void );


				private:

					//////////////////////////////////////////////////////////
					//				Private Class Variables					//
					//////////////////////////////////////////////////////////

					Eon::Vector3 modelPosition, modelRotation;
					GLfloat modelScale;
					MD5Model *theModel;
			};

			class model3DS
			{
				public:

					//////////////////////////////////////////////////////////
					//					Constructor							//
					//////////////////////////////////////////////////////////

					model3DS::model3DS( void )			{ }

					//////////////////////////////////////////////////////////
					//					Deconstructor						//
					//////////////////////////////////////////////////////////

					model3DS::~model3DS( void )			{ }

					//////////////////////////////////////////////////////////
					//					Class Methods						//
					//////////////////////////////////////////////////////////

					void init						( Eon::Vector3 modelPosition, Eon::Vector3 modelRotation, GLfloat modelScale, const char* modelFileName );
					void moveModel					( GLfloat modelXPosition, GLfloat modelYPosition, GLfloat modelZPosition );
					void moveModel					( Eon::Vector3 modelPosition );
					void rotateModel				( GLfloat modelXRotation, GLfloat modelYRotation, GLfloat modelZRotation );
					void rotateModel				( Eon::Vector3 modelRotation );
					void renderModel				( void );
					Eon::Vector3 getPosition		( void );
					Eon::Vector3 getRotation		( void );
					GLfloat getScale				( void );


				private:

					//////////////////////////////////////////////////////////
					//				Private Class Variables					//
					//////////////////////////////////////////////////////////

					Eon::Vector3 modelPosition, modelRotation;
					GLfloat modelScale;
					L3DS *theModel;
			};
	};
}
#endif // EONMODEL_H